package com.his.system.manager.base.dao;

import java.io.Serializable;
import java.util.List;

/**
 * DAO公共基类
 *
 * @Description
 * @Author Admin
 * @Date 2020-06-03 11:07
 */
public interface BaseMapper<T, PK extends Serializable> extends BaseDao<T, PK> {

    /**
     * 根据外键ID查询
     *
     * @param id 外键ID
     * @return T
     */
    T selectByForeignKey(PK id);

    /**
     * 根据条件单个查询
     *
     * @param t t
     * @return T
     */
    T selectObjectByEntity(T t);

    /**
     * 根据条件列表查询
     *
     * @param t 泛型
     * @return T
     */
    List<T> selectListByEntity(T t);

    /**
     * 根据主键 批量修改非空字段
     *
     * @param lists
     * @return
     */
    int updateBatchByPrimaryKeySelective(List<T> lists);

    /**
     * 根据主键 批量修改所有字段
     *
     * @param lists
     * @return
     */
    int updateBatchByPrimaryKey(List<T> lists);
}